3. 중첩 조건문을 보호 구문으로 바꾸기
- 조건문 안의 조건문을 중첩으로 사용하기 보다 보호구문을 활용하면 코드를 읽는 사람이 로직을 이해하는데 편해진다.
저자의 Tip
- 참인 경로, 거짓인 경로 모두 정상 동작일 경우, if...else 절 활용
- 한쪽만 정상, 다른 한쪽은 비정상인 경우 비정상인 경우를 return하여 함수를 빠져나온다. (=== 보호 구문 )
절차
- 교체해야 할 조건 중 가장 바깥 것을 선택하여 보호 구문으로 바꾼다.
- 테스트
- 1~2반복
- 모든 보호 구문이 같은 결과를 반환한다면 보호 구문들의 조건식을 통합(10.2)한다.
예시 코드
😞 Before
function getPayAmount() {
let result
if (isDead) {
result = deadAmount()
} else {
if (isSeparated) {
result = separatedAmount()
} else {
if (isRetired) {
result = retiredAmount()
} else {
result = normalAmount()
}
}
}
return result
}
😃 After
function getPayAmount() {
if (isDead) {
return deadAmount()
}
if (isSeparated) {
return separatedAmount()
}
if (isRetired) {
return retiredAmount()
}
return normalAmount()
}
💡 Tip
기존에 참으로 중첩되던 if문을 역조건으로 조건식을 만들어서 리팩터링 할 수도 있다.
😞 Before
if (isAdult) {
if (isMatch) {
return certificate()
}
}
😃 After
if (isUnderAge) return
if (isMatch) return
return certificate()
- 논의 사항
- !(a > 0 && b > 0 && c > 0), a <= 0 || b <=0 || c <=0